home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / CPPAWARE.PAK / DBEVENT.CPP < prev    next >
C/C++ Source or Header  |  1997-05-06  |  4KB  |  135 lines

  1. //--------------------------------------------------------
  2. // DBCONTRL.CPP
  3. // Copyrights (C) 1996 Borland International
  4. // All rights reserved.
  5. //--------------------------------------------------------
  6.  
  7. #include <owl/vbxctl.h>
  8. #include <vdbt/dbevent.h>
  9.  
  10.  
  11. #ifndef __FLAT__
  12. #pragma argsused
  13. #endif __FLAT__
  14. static TVbxControl* PASCAL
  15. GetVbxControlPtr( GENERIC& gnrc, HCTL hCtl )
  16. {
  17. #ifdef __FLAT__
  18.   static const bool bIsNT( TSystem().IsNT() );
  19.  
  20.   if( bIsNT )
  21.   {
  22.     TVbxControl *lpSave, *lpVbx;
  23.  
  24.     lpSave = lpVbx = TYPESAFE_DOWNCAST( (TVbxControl*)&gnrc, TVbxControl );
  25.  
  26.     // Check the list of siblings to find the control.
  27.     for( ; lpVbx && lpVbx->GetHCTL() != hCtl ; )
  28.       lpVbx = TYPESAFE_DOWNCAST( lpVbx->Next(), TVbxControl );
  29.  
  30.     if( ! lpVbx )
  31.     {
  32.       lpVbx = TYPESAFE_DOWNCAST( lpSave->Previous(), TVbxControl );
  33.       for( ; lpVbx && lpVbx->GetHCTL() != hCtl ; )
  34.         lpVbx = TYPESAFE_DOWNCAST( lpVbx->Previous(), TVbxControl );
  35.     }
  36.  
  37.     return lpVbx;
  38.   }
  39. #endif __FLAT__
  40.   return TYPESAFE_DOWNCAST( ::GetWindowPtr( ::VBXGetHwnd( hCtl ) ), TVbxControl );
  41. }
  42.  
  43. //--------------------------------------------------------
  44. // Dispatchaers
  45. //--------------------------------------------------------
  46. int32 _OWLFUNC
  47. NotifyEvent_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(), uint, int32)
  48. {
  49.   (generic.*pmf)();
  50.   return 0;
  51. }
  52.  
  53. int32 _OWLFUNC
  54. DragEvent_Dispatch(GENERIC& gnrc, void (GENERIC::*pmf)(TVbxControl&, SHORT, SHORT), uint, int32 lParam)
  55. {
  56.   LPVBXEVENT   e = LPVBXEVENT( lParam );
  57.   TVbxControl *pvbx = ::GetVbxControlPtr( gnrc, VBX_EVENTARGNUM( e, HCTL, 0 ) );
  58.   TVbxControl  null( 0, 0 );
  59.  
  60.   (gnrc.*pmf)(  pvbx ? *pvbx : null
  61.              , VBX_EVENTARGNUM( e, SHORT, 1 )
  62.              , VBX_EVENTARGNUM( e, SHORT, 2 ) );
  63.   return 0;
  64. }
  65.  
  66. int32 _OWLFUNC
  67. DragOver_Dispatch(GENERIC& gnrc, void (GENERIC::*pmf)(TVbxControl&, SHORT, SHORT, TDragState), uint, int32 lParam)
  68. {
  69.   LPVBXEVENT   e = LPVBXEVENT( lParam );
  70.   TVbxControl *pvbx = ::GetVbxControlPtr( gnrc, VBX_EVENTARGNUM( e, HCTL, 0 ) );
  71.   TVbxControl  null( 0, 0 );
  72.  
  73.   (gnrc.*pmf)(  pvbx ? *pvbx : null
  74.              , VBX_EVENTARGNUM( e, SHORT, 1 )
  75.              , VBX_EVENTARGNUM( e, SHORT, 2 )
  76.              , TDragState( VBX_EVENTARGNUM( e, SHORT, 3 ) ) );
  77.   return 0;
  78. }
  79.  
  80. int32 _OWLFUNC
  81. KeyEvent_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(SHORT*, TShiftState), uint, int32 lParam)
  82. {
  83.   LPVBXEVENT e = LPVBXEVENT( lParam );
  84.  
  85.   (generic.*pmf)( &VBX_EVENTARGNUM( e, SHORT, 0 )
  86.                 , TShiftState( VBX_EVENTARGNUM( e, USHORT, 1 ) ) );
  87.   return 0;
  88. }
  89.  
  90. int32 _OWLFUNC
  91. KeyPress_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(SHORT), uint, int32 lParam)
  92. {
  93.   LPVBXEVENT e = LPVBXEVENT( lParam );
  94.  
  95.   (generic.*pmf)( VBX_EVENTARGNUM( e, SHORT, 0 ) );
  96.   return 0;
  97. }
  98.  
  99. int32 _OWLFUNC
  100. MouseEvent_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(TMouseButton, TShiftState, SHORT, SHORT), uint, int32 lParam)
  101. {
  102.   LPVBXEVENT e = LPVBXEVENT( lParam );
  103.  
  104.   (generic.*pmf)( TMouseButton( VBX_EVENTARGNUM( e, USHORT, 0 ) )
  105.                 , TShiftState( VBX_EVENTARGNUM( e, USHORT, 1 ) )
  106.                 , VBX_EVENTARGNUM( e, SHORT, 2 )
  107.                 , VBX_EVENTARGNUM( e, SHORT, 3 ) );
  108.   return 0;
  109. }
  110.  
  111. int32 _OWLFUNC
  112. DrawItem_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(SHORT, TRect, TOwnerDrawState), uint, int32 lParam)
  113. {
  114.   LPVBXEVENT e = LPVBXEVENT( lParam );
  115.  
  116.   (generic.*pmf)( VBX_EVENTARGNUM( e, SHORT, 0 )
  117.                 , TRect( VBX_EVENTARGNUM( e, SHORT, 1 )
  118.                        , VBX_EVENTARGNUM( e, SHORT, 2 )
  119.                        , VBX_EVENTARGNUM( e, SHORT, 3 )
  120.                        , VBX_EVENTARGNUM( e, SHORT, 4 ) )
  121.                 , TOwnerDrawState( VBX_EVENTARGNUM( e, USHORT, 5 ) ) );
  122.   return 0;
  123. }
  124.  
  125. int32 _OWLFUNC
  126. MeasureItem_Dispatch(GENERIC& generic, void (GENERIC::*pmf)(SHORT, SHORT*), uint, int32 lParam)
  127. {
  128.   LPVBXEVENT e = LPVBXEVENT( lParam );
  129.  
  130.   (generic.*pmf)( VBX_EVENTARGNUM( e, SHORT, 0 )
  131.                 , &VBX_EVENTARGNUM( e, SHORT, 1 ) );
  132.   return 0;
  133. }
  134.  
  135.